#include "Service.hpp"
#include "Protocol.hpp"
#include "NetCal.hpp"
#include "TcpServer.hpp"
#include "Daemon.hpp"
#include <memory>

int main(int argc, char *args[])
{
    if (argc != 2)
    {
        LOG(FATAL, "Usage: ./tcpserver -localport\n");
        exit(0);
    }
    // Daemon(0,0);
    uint16_t port = std::stoi(args[1]);
    NetCal cal;
    IOService service(std::bind(&NetCal::Calculator, &cal, std::placeholders::_1));

    std::unique_ptr<TcpServer> tsvr = std::make_unique<TcpServer>(
        std::bind(&IOService::IOExcute, &service, std::placeholders::_1, std::placeholders::_2), 
        port
    );
    tsvr->Loop();
    return 0;
}
